home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
parallax
/
mac_sit.hqx
/
Parallaxis 2.11
/
sort.z
< prev
Wrap
Text File
|
1992-01-09
|
4KB
|
146 lines
START
10 PE
2 PORTS
SCALAR I1 I10 I4 B2
VECTOR I1 I3 B1 B2 I1
1 : GOTO 15;
2 : PROC 1 VECTOR I1;
POPV VI1:1;
VI[VI1:1] := 0;
PUSHV VI1:1;
RETURN;
3 : PROC 1;
ERROR "value out of range";
RETURN;
4 : PROC 1
SCALAR
VECTOR I2 I1; group number 1
PUSHV ADDR VI1:2;
5 : VI1:1 := ID - 1; for LIST calculating DIMi
VI1:1 := VI1:1 + 1; DIM1
6 : VI1:3 := VI1:1 - 1;
7 : VI1:3 := VI1:3 - 1;
8 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 9 CALL 2;
CONNECT 1 TO 2 AT VI1:2;
9 : VI1:3 := VI1:1 + 1;
10 : VI1:3 := VI1:3 - 1;
11 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 9 CALL 2;
CONNECT 2 TO 1 AT VI1:2;
12 : POPV VI1:2;
13 : RETURN; group number : 1
14 : PROC 1; configuration : LIST
VI0:1 := ID - 1; for LIST calculating DIMi
VI0:1 := VI0:1 + 1; DIM1
RETURN; configuration : LIST
15 : CALL 4; connections
16!15 : WRITE "Enter 10 values: "; line 15 column 2
17!16 : SI0:1 := 1; line 16 column 2
18 : SI0:13 := 10;
19!16 : IF SI0:1 > SI0:13 GOTO 28; line 16 column 2
20!16 : IF SI0:1 < 1 CALL 3; line 16 column 19
21 : IF 10 < SI0:1 CALL 3;
22 : SI0:12 := ADDR SI0:2 - SIZE( I1 );
23 : SI0:14 := SI0:1 * SIZE( I1 );
24 : SI0:12 := SI0:12 + SI0:14;
25 : READ SI[SI0:12];
26 : SI0:1 := SI0:1 + 1;
27 : GOTO 19;
28!17 : CALL 14; line 17 column 2
29 : LOAD VI0:2 WITH SI0:2;
30!19 : SI0:1 := 1; line 19 column 2
31 : SI0:13 := 10;
32!19 : IF SI0:1 > SI0:13 GOTO 104; line 19 column 2
33!20 : CALL 14; line 20 column 4
34!21 : VI0:4 := VI0:2; line 21 column 6
35 : PROPAGATE VI0:4 OUT 2 IN 1;
36!22 : VI0:3 := VI0:2; line 22 column 6
37 : PROPAGATE VI0:3 OUT 1 IN 2;
38!23 : VB0:1 := FALSE; line 23 column 6
39!25 : SI0:14 := SI0:1 MOD 2; line 25 column 6
40 : SB0:1 := SI0:14;
41 : IF SB0:1 = FALSE GOTO 63;
42!26 : VB0:3 := TRUE; line 26 column 8
43 : VI0:5 := VI0:1 MOD 2;
44 : VB0:2 := VI0:5;
45 : IF VB0:2 = FALSE CALL 48;
46 : IF VB0:3 CALL 51;
47 : GOTO 55;
48 : PROC 1;
49 : VB0:3 := FALSE;
50 : RETURN;
51 : PROC 1;
52 : VB0:2 := VI0:3 < VI0:2;
53 : VB0:3 := VB0:2;
54 : RETURN;
55 : VB0:2 := VB0:3;
56 : IF VB0:2 CALL 58;
57 : GOTO 62;
58 : PROC 1;
59!27 : VI0:2 := VI0:3; line 27 column 10
60!28 : VB0:1 := TRUE; line 28 column 10
61 : RETURN;
62 : GOTO 84;
63!31 : VB0:2 := TRUE; line 31 column 8
64 : VI0:5 := VI0:1 MOD 2;
65 : VB0:3 := VI0:5;
66 : VB0:3 := NOT VB0:3;
67 : IF VB0:3 = FALSE CALL 70;
68 : IF VB0:2 CALL 73;
69 : GOTO 77;
70 : PROC 1;
71 : VB0:2 := FALSE;
72 : RETURN;
73 : PROC 1;
74 : VB0:3 := VI0:3 < VI0:2;
75 : VB0:2 := VB0:3;
76 : RETURN;
77 : VB0:3 := VB0:2;
78 : IF VB0:3 CALL 80;
79 : GOTO 84;
80 : PROC 1;
81!32 : VI0:2 := VI0:3; line 32 column 10
82!33 : VB0:1 := TRUE; line 33 column 10
83 : RETURN;
84!37 : PROPAGATE VB0:1 OUT 2 IN 1; line 37 column 6
85!38 : VB0:3 := TRUE; line 38 column 6
86 : IF VB0:1 = FALSE CALL 89;
87 : IF VB0:3 CALL 92;
88 : GOTO 96;
89 : PROC 1;
90 : VB0:3 := FALSE;
91 : RETURN;
92 : PROC 1;
93 : VB0:2 := ID > 1;
94 : VB0:3 := VB0:2;
95 : RETURN;
96 : VB0:2 := VB0:3;
97 : IF VB0:2 CALL 99;
98 : GOTO 102;
99 : PROC 1;
100!38 : VI0:2 := VI0:4; line 38 column 35
101 : RETURN;
102 : SI0:1 := SI0:1 + 1;
103 : GOTO 32;
104!42 : CALL 14; line 42 column 2
105 : STORE VI0:2 TO SI0:2;
106!43 : SI0:1 := 1; line 43 column 2
107 : SI0:13 := 10;
108!43 : IF SI0:1 > SI0:13 GOTO 118; line 43 column 2
109!43 : IF SI0:1 < 1 CALL 3; line 43 column 19
110 : IF 10 < SI0:1 CALL 3;
111 : SI0:14 := ADDR SI0:2 - SIZE( I1 );
112 : SI0:15 := SI0:1 * SIZE( I1 );
113 : SI0:14 := SI0:14 + SI0:15;
114 : WRITE SI[SI0:14] 10;
115!43 : WRITE EOL; line 43 column 38
116 : SI0:1 := SI0:1 + 1;
117 : GOTO 108;
118 : END; SORT
STOP